package com.policenacorp.ejb.impl;

import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import com.policenacorp.ejb.bean.local.SessionContextBeanLocal;
import com.policenacorp.ejb.bean.remote.SessionContextBeanRemote;

@Stateless
public class SessionContextBusiness implements SessionContextBeanLocal,
		SessionContextBeanRemote {

	@Resource
	private SessionContext context;

	@Override
	public void imprimeDados() {
		// imprime todos os valores no ENC (Enterprise Naming Context) deste EJB
		// parametros podem ser carregados no ejb-jar.xml
		System.out.println("Imprime os dados do contexto.");
		for (final String key : context.getContextData().keySet()) {
			System.out.println(String.format("Chave '%s', valor '%s'", key,
					context.getContextData().get(key).toString()));
		}
	}

	@Override
	public void businessObject() {
		// cria instancia de ejb passando uma das interfaces do business atual
		SessionContextBeanLocal beanLocal = context
				.getBusinessObject(SessionContextBeanLocal.class);
		beanLocal.doNothing();
	}

	@Override
	public void doNothing() {
		System.out.println("Fazendo nada...");
	}

	@Override
	public void imprimeInterfaceBean() {
		// determina qual interface a instancia atual tem, se eh remote, local
		// ou interface webservice
		System.out.println(String.format("Interface chamadora: %s'", context
				.getInvokedBusinessInterface().getCanonicalName()));
	}
}
